import Vue from 'vue'
import Vuex from 'vuex'
import cart from './cart'
import login from './login'
Vue.use(Vuex)

const myPlugin = (store) => {
  // 当 store 初始化后调用 监听mutations
  store.subscribe((mutation, state) => {
    console.log('mutation:', mutation, state)
    localStorage.setItem('state', JSON.stringify(state))
  })
}

export default new Vuex.Store({
  // 这个插件可以监听每一次用户mutations的数据
  plugins: [myPlugin],
  // 5. 模块（就是当vuex的代码过多的时候，拆分vuex）
  modules: { cart, login },
})

// 问题：如何解决vuex数据一刷新就消失的问题？也叫数据持久化问题
// 借助本地存储解决或者接口（目前先使用本地存储）
/**
 * plugins插件就是一个函数，这个函数的参数是store
 * 1. vuex最终逻辑处理的地方都在mutaions中，
 * 2. 那现在有一个plugins的这个插件，
 * 3. 可以帮助我们监听用户每一次提交给mutations的数据
 */
